package writer;

import java.io.FileWriter;
import java.io.IOException;

/**
 * FileWriter类:
 *  构造方法:
 *      public FileWriter(String fileName) throws IOException
 *          1.构造方法会根据路径去硬盘中检测该路径是否可用,不可用则直接诶抛出异常FileNotFoundException
 *          2.如果该路径在硬盘中可用,则检测是否存在该文件,如果不存在则会自动创建一个新的空白文件
 *          3.如果该路径在硬盘中可用并且已存在此文件,该构造方法则会清空文件内容(删除文件重新创建)
 *          4.FileWriter会使用平台默认码表(当前JDK 21的file.encoding默认为UTF-8)去生成一个文件
 *  成员方法:
 *      public void write(int c) throws IOException:写入单个字符,会将字符写入底层的缓冲中(byte[] cb = new byte[512]),要想写到文件最终要刷新或关流
 *      public void flush() throws IOException:手动刷新,将数据刷新到文件
 *      public void write(char[] cbuf) throws IOException:写入整个字符数组到文件
 *      public void write(char[] cbuf, int off, int len) throws IOException:写入字符数组中从off索引开始指定的len个字符(包含off索引处的字符)
 *      public void write(String str) throws IOException:直接写入一个字符串
 *      public void close() throws IOException:关流释放资源
 *
 */
public class FileWriterDemo01 {
    public static void main(String[] args)throws IOException {
        //method01();
        //method02();
        FileWriter fw = new FileWriter("day23-IO-02/4.txt");
        fw.write("大家好,才是真的好");
        fw.close();
    }

    private static void method02() throws IOException {
        FileWriter fw = new FileWriter("day23-IO-02/2.txt");
        char[] chars = {'你', 'a', '好'};

        fw.write(chars);
        fw.close();

        FileWriter fw02 = new FileWriter("day23-IO-02/3.txt");
        char[] chars02 = {'你', 'a', '好', '吗'};

        fw02.write(chars02, 1, 2);
        fw02.close();
    }

    private static void method01() throws IOException {
        //FileWriter fw = new FileWriter("E:/1.txt");//java.io.FileNotFoundException: E:\1.txt (系统找不到指定的路径。)
        FileWriter fw = new FileWriter("day23-IO-02/1.txt");
        //System.out.println(System.getProperties());//file.encoding的值为默认码表

        fw.write('a');//char类型可以自动转换成int类型
        fw.write('你');//char类型可以自动转换成int类型 写入的是UTF-8中的字节(一个中文三个字节)
        //fw.flush();
        fw.close();//刷新+释放资源
    }
}
